package com.sugar.real.estate.module.business.service.openedcity;

import com.sugar.real.estate.module.business.controller.admin.openedcity.vo.OpenedCityListReqVO;
import com.sugar.real.estate.module.business.controller.admin.openedcity.vo.OpenedCitySaveReqVO;
import com.sugar.real.estate.module.business.controller.app.infocls.vo.AppGetCityRespVO;
import com.sugar.real.estate.module.business.controller.app.infocls.vo.AppOpenedCityRespVO;
import com.sugar.real.estate.module.business.dal.dataobject.openedcity.OpenedCityDO;

import javax.validation.Valid;
import java.util.List;

/**
 * 已开通城市 Service 接口
 *
 * @author Ysugar
 */
public interface OpenedCityService {

    /**
     * 创建已开通城市
     *
     * @param createReqVO 创建信息
     * @return 编号
     */
    Long createOpenedCity(@Valid OpenedCitySaveReqVO createReqVO);

    /**
     * 更新已开通城市
     *
     * @param updateReqVO 更新信息
     */
    void updateOpenedCity(@Valid OpenedCitySaveReqVO updateReqVO);

    /**
     * 删除已开通城市
     *
     * @param id 编号
     */
    void deleteOpenedCity(Long id);

    /**
     * 根据城市查询数据库中已开通的城市（若没有则新增）并返回ID
     * @param name 城市名
     * @param parentId 父级ID
     * @return ID
     */
    Long getSameOpenedCity(String name, Long parentId);

    /**
     * 获得已开通城市
     *
     * @param id 编号
     * @return 已开通城市
     */
    OpenedCityDO getOpenedCity(Long id);

    /**
     * 获得已开通城市列表
     *
     * @param listReqVO 查询条件
     * @return 已开通城市列表
     */
    List<OpenedCityDO> getOpenedCityList(OpenedCityListReqVO listReqVO);

    AppGetCityRespVO getTopOpenedCity();

    List<AppOpenedCityRespVO> getOpenedCityByParentId(Long parentId);

    AppGetCityRespVO getOpenedCityTreeList();
}